package com.jing.weibo.ws.sina;

import java.io.IOException;

import org.springframework.stereotype.Component;

import weibo4j.Timeline;
import weibo4j.http.ImageItem;
import weibo4j.model.Status;
import weibo4j.model.WeiboException;

import com.jing.system.comm.contants.SystemCons;
import com.jing.system.utils.FileUtil;

/**
 * Timeline[发布微博等]新浪微博的接口
 * @author jing.yue
 * @version 2012/08/29 1.0.0
 */
@Component
public class TimelineService {

	/**
	 * 发布一条新微博
	 * @param status 		要发布的微博文本内容，必须做URLencode，内容不超过140个汉字
	 * @param token			授权的token
	 * @return
	 * @throws WeiboException
	 */
	public Status updateStatus(String status, String token) throws WeiboException {
		Timeline timeline = new Timeline();
		timeline.setToken(token);
		return timeline.UpdateStatus(status);
	}

	/**
	 * 上传图片并发布一条新微博
	 * @param status 		要发布的微博文本内容，必须做URLencode，内容不超过140个汉字
	 * @param token			授权的token
	 * @return
	 * @throws WeiboException
	 * @throws IOException
	 */
	public Status updateStatus(String status, String imgUrl, String token) throws WeiboException, IOException {
		Timeline timeline = new Timeline();
		timeline.setToken(token);
		byte[] imageData = FileUtil.readFileBytes(imgUrl);
        if (imageData != null) {
        	ImageItem item = new ImageItem("pic", imageData);
    		return timeline.UploadStatus(java.net.URLEncoder.encode(status, SystemCons.ENCODE_UTF_8), item);
        }
        return timeline.UpdateStatus(status);
	}

	/**
	 * 转发一条微博
	 * @param id			要转发的微博ID
	 * @param status		添加的转发文本，必须做URLencode，内容不超过140个汉字，不填则默认为“转发微博”
	 * @param is_comment	是否在转发的同时发表评论，0：否、1：评论给当前微博、2：评论给原微博、3：都评论，默认为0
	 * @param token			授权的token
	 * @return
	 * @throws WeiboException
	 */
	public Status repost(String id, String status, Integer is_comment, String token) throws WeiboException {
		Timeline timeline = new Timeline();
		timeline.setToken(token);
		return timeline.Repost(id, status, is_comment);
	}
}
